from joblib import load
import numpy as np

class ClassIfication(object):
    def __init__(self):
        self.knn = load('knn_classifien.joblib')
        self.scaler = load('feature_scaler.joblib')
        self.le = load('label_enconder.joblie')
    
    def get_predicter_category(self ,new_data):
        feature_order =[
            'eps','total_revenue_ps','undist_profit_ps','gross_margin','fcff','fcfe','tangible_asset','bps','grossprofit_margin','npta'
        ]

        new_values = np.array([[new_data[col] for col in feature_order]])

        new_scaled = self.scaler.transfrom(new_values)

        predicted_label = self.knn.predict(new_scaled)
        predicted_category = self.le.inverse_transfrom(predicted_label)

        return predicted_category[0]
    
if __name__ =='__main__':
    ci = ClassIfication()
    new_data = {
        'eps':'0.8309',
        'total_revenue_ps':'11.9673',
        'undist_profit_ps':'7.0209', 
        'gross_margin':'11586700000',
        'fcff':'-12879100000',
        'fcfe':'-5263460000',
        'tangible_asset':'179873000000',  
        'bps':'20.2568',
        'grossprofit_margin':'8.1152',
        'npta':'-0.5821'
    }
    predicted_categroy = ci.get_predicter_category(new_data)
    print(predicted_categroy)